1. Field of the Invention
The present invention relates generally to compositional software and, more particularly, to methods for dynamically acquiring and assembling software components in distributed object environments.
2. Description of the Related Art
Recently there has been a growing interest in the area of xe2x80x9cCompositional Software,xe2x80x9d which refers to software that is assembled from components. Proponents of this technology envision a future where software engineers assemble applications from catalogs of software components, similar to the way that hardware engineers design boards by selecting integrated circuits from catalogs. The goal of building applications by assembling components is to simplify software development so that average programmers do not have to be extensively educated or exceptionally skilled. An anticipated shortage of software engineers and programmers in the future means that software should be made easier and quicker to build to meet the demand for ever more sophisticated and flexible applications.
In the prior art, application-build environments were operating system dependent, because the GUI components generated were mapped to services supported by the windowing system. With the introduction of Java, a language designed to run on any hardware platform and on any operating system, components can now be generated that will work on any system with the Java Virtual Machine. The Java Virtual Machine provides a runtime environment for Java that shields the Java program from the idiosyncrasies of any given operating system. The Java program extends standard classes to implement objects, and inherited code from standard base classes is written to function the same on all platforms. The Java environment guarantees that a Java application written with components will work the same no matter where it is run. This is necessary particularly for the World Wide Web (WWW) environment, where the client may be any computer that has a browser.
The Common Object Request Broker Architecture (CORBA) is a conventional technology that allows objects within distributed object-oriented programs to invoke methods remotely. The significance of this technology is that distributed programs may be written as if all the objects were located in the same process space, so that the programming becomes simpler using CORBA compared to previously available distributed techniques. In addition, CORBA supports language and operating system independent remote method invocation, allowing the client to perform method invocations on server objects written in different languages or running on different platforms. CORBA provides networking independence the way that the Java Virtual Machine provides operating system independence.
Distributed object-oriented (OO) programs based on CORBA allow general purpose applications to be developed across multiple heterogeneous systems and databases. Frequently, CORBA servers are used to put an object-oriented front end on a legacy system or database. The details of interacting with the legacy system are encapsulated within the CORBA server""s objects so the client can be written more simply. Distributed OO programs can integrate a corporation""s existing software much faster than rewriting the legacy systems, so the benefits of an integrated software environment or data warehouse can be achieved without investing years in developing a new version of business-critical applications.
CORBA objects are statically located on the server. Clients access the CORBA object""s data and behavior by remote method invocations. The client obtains a reference to a remote CORBA object, and then interacts with the CORBA object. This programming style works very well for providing an object-oriented interface to a non-OO legacy system, because the legacy system is encapsulated by the CORBA objects on the server.
Combining Java with CORBA provides an incredibly powerful programming environment. CORBA provides cross-language support, which is very important for interacting with legacy systems and servers in other languages. Java provides portability and mobility. Portability allows Java programs to be run on any system having a Java Virtual Machine. Mobility allows the programs to be downloaded on demand.
Java software offers portability, which allows the software to run on any platform. When Java applets are combined with remote method invocation, then some very interesting web-based applications can be built. A Java graphical frontend can communicate with object-oriented servers using CORBA or the Java-to Java Remote Method Invocation (RMI). Now the Java client can provide access to data such as airline reservation systems or control remote devices such as large telescopes or roaming unmanned vehicles. The client uses remote method invocations to interact with a server, and the server may encapsulate a legacy system, a database, or any arbitrary computer-controlled function.
The advantage here is that the portability and mobility of Java applets makes it possible to give virtually anyone access to the application who has access to the Internet. The back-end server is still controlled, maintained, and upgraded by programmers and administrators physically close (usually) to the database or computer-controlled equipment.
An interesting and useful feature of object-oriented software is the ability of an object to masquerade as different types. This feature is called xe2x80x9cpolymorphism.xe2x80x9d There are restrictions to this ability, and the restrictions are set by the class hierarchies to which the object belongs. The ability of an object to masquerade as another type is determined by the class hierarchy(ies) to which the object belongs. An object can only masquerade as a superclass of the object""s class. Hierarchies allow classes to be constructed that are subtypes or refinements of existing classes.
An object-oriented system may be represented by an Object Model. An Object Model is a graphical picture used by software designers to describe the classes of objects in the system and the interactions between the objects. Graphical modeling languages such as Unified Modeling Language (UML) are well-known in the object-oriented industry for describing the classes of objects, attributes, operations and relationships. The object model is a design. The source code for an object implements the interaction with another object by referring to the object""s attribute values or calling operations. The interactions are determined at design time and fixed at compile time.
A method for distributed object communications based on dynamically acquired and assembled software components is disclosed. This invention provides a method for incrementally acquiring additional software components which can then be assembled according to the logic represented within one or more mediating components. The acquired components may then initiate communications with remote servers and/or may provide a component-specific user interface.
The present invention includes three main features. First, components are written in a language that supports portability, polymorphism and mobility so that they may be acquired via downloading from one or more networked servers, databases or file systems and instantiated prior to being assembled. Second, mediating component(s) provide implementation of the knowledge representation of the interactions of other components therefore assuming responsibility for coordinating interactions between the acquired and assembled components. Third, the components acquired may then initiate communications with remote servers and/or provide a user interface.
The present invention, together with additional features and advantages thereof, may best be understood by reference to the following description taken in connection with the accompanying illustrative drawings.